/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: DickYang
 * Date: 2023-06-01
 * Time: 16:17
 *
 * 使用String进行字符串拼接
 */
public class TestString {

    public static void main5(String[] args) {
        String str = new String("hello");
        System.out.println(str);
    }
    public static void main4(String[] args) {
        String str1 = "hello";
        String str2 = new String("hello");
        String str3 = "hello";
        //这个hello对象将被存储在常量池中
        System.out.println(str1 == str2);
        System.out.println(str1 == str3);
    }
    public static void main(String[] args) {
        String str = "hello";
        str += "abc";
        System.out.println(str);
    }

    public static void main2(String[] args) {
        String str = "hello"; //创建一个对象

        StringBuilder stringBuilder = new StringBuilder(); //创建一个对象
        stringBuilder.append(str);
        stringBuilder.append("abc"); //创建一个对象
        str = stringBuilder.toString();  //toString返回一个对象

        System.out.println(str);
    }

    //比较 用String进行字符串拼接 与 StringBuilder和 StringBuffer进行字符串拼接 的相应时间
    public static void main3(String[] args) {
        //使用String进行字符串拼接所需要的时间
        String str = "hello";
        long strat = System.currentTimeMillis();//记录循环前的时间
        for (int i = 0; i < 10000; i++) {
            str += "abc";
        }
        long end = System.currentTimeMillis();//记录循环后的时间
        System.out.println("String字符串拼接所用的时间：" + (end - strat));//计算时间差

        //使用StringBuilder进行字符串拼接所需要的时间
        String str1 = "hello";
        StringBuilder stringBuilder = new StringBuilder();
        long strat1 = System.currentTimeMillis();
        for (int i = 0; i < 10000; i++) {
            stringBuilder.append("abc");
        }
        long end1 = System.currentTimeMillis();
        System.out.println("StringBuilder字符串拼接所用的时间：" + (end1 - strat1));

        //使用StringBuffer进行字符串拼接所需要的时间
        String str3 = "hello";
        StringBuffer stringBuffer = new StringBuffer();
        long strat3 = System.currentTimeMillis();
        for (int i = 0; i < 10000; i++) {
            stringBuffer.append("abc");
        }
        long end3 = System.currentTimeMillis();
        System.out.println("StringBuffer字符串拼接所用的时间：" + (end3 - strat3));
    }
}
